package com.lovo.demo;

import java.util.Scanner;

public class Game01 {
    public static void main(String[] args) {
//    通常由两个人玩，一方出数字，一方猜。
//    出数字的人要想好一个没有重复数字的4个数，不能让猜的人知道。
//    猜的人就可以开始猜。每猜一个数字，出数者就要根据这个数字给出几A几B，
//    其中A前面的数字表示数字正确且位置正确的数的个数，
//    而B前的数字表示数字正确而位置不对的数的个数。
        // 整型
//        int[] sysNums = new int[4];
        // 0-9字符 对应的数字 48-57
        char[] sysNums = new char[4];
        for (int i = 0; i < sysNums.length; i++) {
//            sysNums[i] = (int)(Math.random() * 10);
            sysNums[i] = (char) ((Math.random() * 10) + 48);
            //去重
            for (int j = 0; j < i; j++) {
                if (sysNums[i] == sysNums[j]) {
                    i--;
                    break;
                }
            }
        }
        //打印随机生成数
        for (int i = 0; i < sysNums.length; i++) {
            System.out.print(sysNums[i] + " ");
        }

        Scanner input = new Scanner(System.in); //打开控制台

        for (; ; ) {
            System.out.println("请输入猜的数据：");
            String str = input.next(); //输入字符串
            if (str.length() != 4) { //如果字符串里的数量不为4
                System.out.println("输入信息有误，请重新输入！");
                continue;
            }

            char[] inputChars = str.toCharArray(); //把字符串转换成数组

            boolean flag = false;  //创建一个布尔类型 flag 就代表错误  true代表正确

            for (int i = 0; i < inputChars.length; i++) {

                for (int j = 0; j < i; j++) {

                    if (inputChars[i] == inputChars[j]) {     //验证用户输入的字符串重复 去重
                        flag = true;
                        break;
                    }
                }
            }

            if (flag == true) {
                System.out.println("输入信息有误，请重新输入！");
                continue;
            }
            //完成用户输入信息和系统信息的比较给出结果
            //声明两个计数变量 保存a和b的对应数据
            int countA = 0;
            int countB = 0;

            for (int i = 0; i < sysNums.length; i++) {
                for (int j = 0; j < inputChars.length; j++) {
                    if (sysNums[i] == inputChars[j]) {
                        if (i == j) {
                            countA++;
                        } else {
                            countB++;
                        }
                    }
                }
            }
            System.out.println(countA + "A" + countB + "B");
            if(countA == 4){
                System.out.println("恭喜你猜对了");
                break;
//                System.exit(0);
            }
        }
        }

    }

